"""
简化缓存管理器模块
提供基础的 Redis 缓存功能

简化版本：移除了复杂的内存缓存和统计功能
"""

import json
import logging
from typing import Any, Optional
from .redis_pool_manager import get_redis_pool_manager

logger = logging.getLogger(__name__)

class SimplifiedCacheManager:
    """
    简化缓存管理器
    专注于 Redis 缓存的核心功能
    """

    def __init__(self, redis_url: str = None):
        """
        初始化简化缓存管理器

        Args:
            redis_url: Redis连接URL
        """
        self.redis_pool_manager = None
        self.enabled = False

        if redis_url:
            try:
                self.redis_pool_manager = get_redis_pool_manager()
                # 测试连接
                test_client = self.redis_pool_manager.get_client("cache")
                if test_client:
                    test_client.ping()
                    self.enabled = True
                    logger.info("简化缓存管理器初始化成功")
            except Exception as e:
                logger.warning(f"Redis连接失败，缓存功能禁用: {e}")
                self.enabled = False

    def get(self, key: str) -> Optional[Any]:
        """
        获取缓存数据

        Args:
            key: 缓存键

        Returns:
            缓存的数据，如果不存在则返回 None
        """
        if not self.enabled or not self.redis_pool_manager:
            return None

        try:
            cached_data = self.redis_pool_manager.execute_command("get", key, pool_name="cache")
            if cached_data:
                return json.loads(cached_data)
            return None
        except Exception as e:
            logger.warning(f"Redis缓存读取失败: {e}")
            return None
    def set(self, key: str, value: Any, ttl: int = 3600) -> bool:
        """
        设置缓存数据

        Args:
            key: 缓存键
            value: 要缓存的数据
            ttl: 过期时间（秒），默认1小时

        Returns:
            是否设置成功
        """
        if not self.enabled or not self.redis_pool_manager:
            return False

        try:
            serialized_data = json.dumps(value, ensure_ascii=False)
            self.redis_pool_manager.execute_command("setex", key, ttl, serialized_data, pool_name="cache")
            return True
        except Exception as e:
            logger.warning(f"Redis缓存设置失败: {e}")
            return False

    def delete(self, key: str) -> bool:
        """
        删除缓存数据

        Args:
            key: 缓存键

        Returns:
            是否删除成功
        """
        if not self.enabled or not self.redis_pool_manager:
            return False

        try:
            self.redis_pool_manager.execute_command("delete", key, pool_name="cache")
            return True
        except Exception as e:
            logger.warning(f"Redis缓存删除失败: {e}")
            return False


# 保持向后兼容的别名
CacheManager = SimplifiedCacheManager
